package leetcode;

import java.util.ArrayList;

/**
 * @Project : AlgorithmLearning
 * @Package : Leetcode
 * @File : Q0020.java
 * @Author : WangRuoyu
 * @Date 2023/11/9 17:06
 */


public class Q0020 {
//    public boolean isValid(String s) {
//        ArrayList<Character> stack = new ArrayList<>();
//        for (int i = 0; i < s.length(); i++) {
//            if (s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') {
//                stack.add(s.charAt(i));
//            } else if (s.charAt(i) == ')') {
//                if (stack.isEmpty() || stack.get(stack.size() - 1) != '(') return false;
//                stack.remove(stack.size() - 1);
//            } else if (s.charAt(i) == ']') {
//                if (stack.isEmpty() || stack.get(stack.size() - 1) != '[') return false;
//                stack.remove(stack.size() - 1);
//            } else if (s.charAt(i) == '}') {
//                if (stack.isEmpty() || stack.get(stack.size() - 1) != '{') return false;
//                stack.remove(stack.size() - 1);
//            }
//        }
//        return stack.isEmpty();
//    }


    public boolean isValid(String s) {
        ArrayList<Character> stack = new ArrayList<>();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ')') {
                if (stack.isEmpty() || stack.get(stack.size() - 1) != '(') return false;
                stack.remove(stack.size() - 1);
            } else if (s.charAt(i) == ']') {
                if (stack.isEmpty() || stack.get(stack.size() - 1) != '[') return false;
                stack.remove(stack.size() - 1);
            } else if (s.charAt(i) == '}') {
                if (stack.isEmpty() || stack.get(stack.size() - 1) != '{') return false;
                stack.remove(stack.size() - 1);
            } else {
                stack.add(s.charAt(i));
            }
        }
        return stack.isEmpty();
    }

    public static void main(String[] args) {
        Q0020 sl = new Q0020();
        String s = "()[]{}";
        System.out.println(sl.isValid(s));
    }
}